package conf

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net"
	"net/http"
)

// 定义一个结构体，用来将结果的string格式转成json格式，便于对请求结果进行处理
type BodyIp struct { // 用于将string格式转成json格式，取出token
	Ip string `json:"ip"`
}

// 获取到ip
func GetIp(url string) string {
	responseClient, errClient := http.Get(url) // 获取外网 IP
	if errClient != nil {
		fmt.Printf("error 获取外网 IP 失败，请检查网络\n")
		panic(errClient)
	}
	// 程序在使用完 response 后必须关闭 response 的主体。
	defer responseClient.Body.Close()
	var tokenJson BodyIp                                    // 定义一个结构体，用来将结果的string格式转成json格式，便于对请求结果进行处理
	body, _ := ioutil.ReadAll(responseClient.Body)          // 读取请求结果
	tokenGet := string(body)                                // 请求结果string格式
	errJson := json.Unmarshal([]byte(tokenGet), &tokenJson) // 将string 格式转成json格式
	if errJson != nil {
		fmt.Println("error  json 格式转换失败")
	}
	return tokenJson.Ip
}


// 判断IP地址是否合法
func IsValidIP(ip string) bool {
	return net.ParseIP(ip) != nil
}